import pandas as pd
import matplotlib.pyplot as plt

# 配置 matplotlib 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

# 读取文件
file_path = 'e:/gitvisual/ad-space-available/project/练习一/FhjlViewDD.xlsx'
df = pd.read_excel(file_path)

# 检查必要列是否存在
expected_columns = ['创建时间', '车辆']
missing_columns = [col for col in expected_columns if col not in df.columns]
if missing_columns:
    print(f'缺少必要列: {missing_columns}')
else:
    # 确保日期列是日期类型
    df['创建时间'] = pd.to_datetime(df['创建时间'])

    # 筛选 6 月的数据
    june_data = df[df['创建时间'].dt.month == 6]

    # 检查是否有数据
    if june_data.empty:
        print('未找到 6 月的数据，请检查数据。')
    else:
        # 按车牌号分组并统计总货运量，按货运量从大到小排序
        license_plate_demand = june_data.groupby('车辆').size().sort_values(ascending=False)

        print('每个车牌号 6 月份的总货运量（从大到小排序）：')
        print(license_plate_demand)

        # 设置图片清晰度
        plt.rcParams['figure.dpi'] = 300

        # 绘制柱状图
        plt.figure(figsize=(12, 6))
        ax = license_plate_demand.plot(kind='bar')
        plt.title('车辆 6 月份的总货运量')
        plt.xlabel('车辆')
        plt.ylabel('总货运量')
        plt.xticks(rotation=90)

        # 在柱子上添加数值标签
        for p in ax.patches:
            ax.annotate(str(p.get_height()), (p.get_x() + p.get_width() / 2., p.get_height()),
                        ha='center', va='center', xytext=(0, 5), textcoords='offset points')

        plt.tight_layout()
        # 保存图片
        plt.savefig('六月份车牌号货运量.png')
        print('柱状图已保存为 六月份车牌号货运量.png')
        plt.close()